User's guide /

/

Work Flow

OBS ERP allows you to create custom processes in the context of an ERP module. For example, in module "Tasks" you can have the following process: 



The steps of each process can be changed and automation functions can be applied. For example, you can force OBS ERP to send out email message on completion of a step. Some of the automation functions include:

Automation functions: 
.
This function is used to add quantities in stock. It can be triggered only in module warehouse_slips. 
This function will require the user to input login password in order to complete the step.
This function is used to approve all expense rows.
Block quantities in stock
This function blocks quantities in the warehouse.
Example:

/api/~~col_name~~/~~col_name1~~
Sends a chat message through the firebase platform. The message is sent to mobile devices running Android or iOS

Parameters:
message|recipient_1|recipient_2|recipeint_N

Where:
message - the text message that will be sent
recipient_N - Can be one of the following:
* column name - a column that points to the users module, e.g. user_id (integer references users)
* management_chain - two levels above the employee
* first_level_management_chain - one level above the employee
* staff_json - looks for a column called 'staff_json'. The column must be type JSON and must contain the following json structure [ID, ...], e.g. [1,2,3], where 1, 2, 3 are IDs of employees in module "Staff".
* __PRIV__PrivilegeName - e.g. __PRIV__Accouting. This will send email to employees in this privilege group
* a list of user ids
Check If related expenses are paid.
This function checks if there at least one related email to a record. 

Requirements:
The module should be configured with "Mailings" set to ON.
It checks if the record has at least one file attached
Parameters
file1|file2|....|fileN
Checks if all assigned tasks are in status completed or rejected
// Condition format: field_name[module.field_name <>= value]
Can be used only in module "Quotations"

It checks if all expenses related to a quotation have been approved
This function checks if the field specified as function parameter is empty. If it is, the function returns an error. 

Parameters:
1. Field Name 

Example:
feedback

Update: now you can check more than one field. List the field names with pipe delimiter.

Example:
contact_id|email
Checks if the related records contain boolean columns and returns true if all of them are checked.

This function checks if a warehouse slip related to the selected document exists

Function params: The status id of the warehouse slip. 

For example, if you need the warehouse slip to be in status articles_accepted, select 4

This function can be used to check if all related invoices to a record have been paid
This function checks if all checklist items have been completed. If they are not, the task cannot be completed.
Function:
CheckTaskDependencies

Description:
Checks if the dependent tasks are in the required status. Implements the following dependencies:
  • Start-To-Start
  • Start-To-Finish
  • Finish-To-Start
  • Finish-To-Finish
Requirements:
  • Module "task_dependecies" must be populated with information:
    • name of the dependency - one of the following Start-To-Start, Start-To-Finish, Finish-To-Start, Start-To-Start
    • code of the dependency - SS, SF, FS, FF
    • predecessor statuses - comma-separated list of integers. The integers are the ids of the columns in module "Task Statuses"
    • successor statuses - comma-separated list of integers. The integers are the ids of the columns in module "Task Statuses"
  • Fields in module tasks:
    • predecessors - comma-separated list of WBS elements. It could contain the code of dependency, e.g. 1.1[FF],1,2
    • WBS element
Used only in module "Tenders" !

This functions starts a negotiation with the selected winner of a tender. The administrator of the tender needs to define final prices for each question before triggering this function. In addition, winner should be selected. 

The email template sent to the winner contains a confirmation link allowing the winner to give their formal consent that the final price is accepted and they can start working on the subject of the tender. 

System email is used to send the email template.
This function checks if the fields listed as parameters are populated.

Parameters:
Example - record_id->contract_clients->client_id:field1|field2|field3|fieldN
This function transfers a document from one module to another based on column mapping defined in module_conversion_mapping. 

You need to set up manually the mapping in order the function to work

Parameters: 
NameOfMapping
This function copies the current record. The new record is set with status_id = 1
This function creates purchase orders in module "Expenses".  The created purchase order is for materials that are not in stock. The software calculates the ordered quantity based on the settings in module "Materials" using the following formula.

Ordered Quantitiy = Min_quantity_in_stock + Min_order_quantity - Quantitiy in stock

Min_quantity_in_stock and Min_order_quantity are parameters in module "Materials"
This function generates an employment contract from an employee record.

It works only in module "Staff"

Requirement: A template named "employment_contracts" residing in module "Templates"
Creates an expense document based on a contract ( useful for banks )
Params:

key:value|key1:value1|...
This function creates an invoice from an order
500
This function works only for module "Contracts". It generated invoices based on payment plan. It takes all payments one by one and produces documents in module "Invoices". 
Creates PDF Snapshot of the record
It creates a project based on a record.

Requirements: 
-    If source module is quotations than all related expenses should be approved
-    The source module should contain the following fields: 
    * project_id; 
    * deadline;
    * issuer;
    * contact_id;
    * company_id.

These fields are mandatory to create a project record.
This function creates a project based on a quotation including the materials and products
Creates a quotation base on budget input data
This function creates a quotation without quotation items from project. It updates the quotation_id field in the project
Creates an employee from a potential candidate.

This function can be triggered only through module "Potential candidates" 
..ajksndasd
Creates two warehouse slips from a warehouse transfer document
This function can be used only in modules "Tenders" and "Surveys"

It selects all participants and sends an email containing the tender or survey email template.

System email is used to send the email. The email template is defined in "survey_email" 

TBD: survey_email to be moved to email_templates module
This functions should be triggered through manufacturing requests.

Params: SourceWarehouseID -> DestinationWarehouseID

Example: 1 -> 2

Module: manufaturing_requests
Similar to ManufactureProduct. The materials in the recipe are obtained on FIFO basis.
Similar to ManufactureProduct. The materials in the recipe are obtained on LIFO basis.
This function can be used only in module activity_report. It is used to check if the selected material quantities are in stock. If product is selected, its materials are checked recursively as well. If all materials are in stock, the system generates manfucturing requests for the selected products and warehouse transfer documents for the rest of the materials
Updates the record setting paid to true
To be documented
This function will check if there is material groups in the recipe. If that is the case, the system will return an error and request the user to pick specific material belonging to the selected group.
This runs an SQL function and checks for exceptions. If no exceptions are found, the function is successful. The function must accept one integer parameter - the id of the record

Parameters: SQL function name.
This runs an SQL function and checks for exceptions. If no exceptions are found, the function is successful. The function must have two parameters

- record_id integer - the id of the record 
- user_id integer - the user changing the  status

Parameters: SQL function name.
Releases blocked quantities
.
This function removes qtys from warehouse
Removes a related record. The parameter should be a field name which points to the record that should be removed.
This function implements an approval process. It submits an email request to the management chain of the requestor. The managers have the option to approve or reject the request by clicking buttons embedded in the email notification request. As soon as the approval or rejection is made, the status of the document is changed to "approved" or "rejected" depending on the management decision. 

Requirements:
  • The module should contain the following fields (they can be created automatically in the "Constructor" by turning on the "Approvals" option):
    • approved = true/false
    • rejected = true/false
    • approved_by = integer (references module staff)
  • The module should contain a field called status_id referencing a module called module_statuses
    • module_statuses should contain statuses named "approved" and "rejected" (approved_, approved__, rejected_, rejected__ are also allowed). Both statuses must have "Manual Step" set to "False" 
  • The requestor must be registered in modules "Staff" and "Users"
Function parameters:
  • One of the following options are possible, but none of them is mandatory:
    • FieldName - the field must reference module "Staff".  If such a parameter is defined, the system will send the request to the selected person as well as the managers. This does not mean that this person is authorized to approve the request
    • EmailTemplate - a name of an email template residing in module email_templates
    • EmailTemplate|FieldName|EmailTemplate...... - a combination of the above
Email notifications: 
  • Approval request email notification template
    • by default, the system uses an email template called "request_for_approval". This email template contains information about the approval request and it contains a link to the approval interface.
    • Another template can be used by specifying a function parameter.
    • The Requestor's personal email is used to send the email notification.
    • The request is sent to the following recipients: TO: manager_email, replacement_id_email (if applicable); CC: employee_email, manager_of_manager_email. Additional emails can be added if function parameters are defined 
  • Resolution email notification
    • by default, the system generates an email template containing the manager's decision and additional information
    • a custom email notification template can be defined in every module using the following convention:
      • approval email template name: module_approve
      • rejection email template name: module_reject
    • Upon approval or rejection, the system uses the system email to inform the requestor about the resolution 
Approvers:
  • The approvers must be part of the management chain above the requestor.
  • If you set "first_level_management" as a parameter, the system will notify first line managers only

Delegations:
  • The approvers must be part of the management chain above the requestor.
This function implements an approval process. It submits an email request to the management chain of the requestor. The managers have the option to approve or reject the request by clicking buttons embedded in the email notification request. As soon as the approval or rejection is made, the status of the document is changed to "approved" or "rejected" depending on the management decision.

Requirements:
  • The module should contain the following fields (they can be created automatically in the "Constructor" by turning on the "Approvals" option):
    • approved = true/false
    • rejected = true/false
    • approved_by = integer (references module staff)
  • The module should contain a field called status_id referencing a module called module_statuses
    • module_statuses should contain statuses named "approved" and "rejected" (approved_, approved__, rejected_, rejected__ are also allowed). Both statuses must have "Manual Step" set to "False"
  • The requestor must be registered in modules "Staff" and "Users"
Function parameters:
  • One of the following options are possible, but none of them is mandatory:
    • FieldName - the field must reference module "Staff". If such a parameter is defined, the system will send the request to the selected person as well as the managers. This does not mean that this person is authorized to approve the request
    • EmailTemplate - a name of an email template residing in module email_templates
    • Field EmailTemplate|FieldName|EmailTemplate...... - a combination of the above
    • __approvers__|EmailTemplate - requests approval from all employees listed in the json field "approvers". The following columns have to be present in the module - approvers json not null, approvers_names json not null. 
Email notifications:
  • Approval request email notification template
    • by default, the system uses an email template called "request_for_approval". This email template contains information about the approval request and it contains a link to the approval interface.
    • Another template can be used by specifying a function parameter.
    • The System email is used to send the email notification. Configured in module Admin -> System Email
    • The request is sent to the following recipients: TO: manager_email, replacement_id_email (if applicable); CC: employee_email, manager_of_manager_email. Additional emails can be added if function parameters are defined

  • Resolution email notification
    • by default, the system generates an email template containing the manager's decision and additional information
    • a custom email notification template can be defined in every module using the following convention:
      • approval email template name: module_approve
      • rejection email template name: module_reject
    • Upon approval or rejection, the system uses the system email to inform the requestor about the resolution
Approvers:
  • The approvers must be part of the management chain above the requestor.
  • If you set "first_level_management" as a parameter, the system will notify first line managers only
  • If you set __approvers__ as a parameter, the approval will be requested from all employees listed in the json field "approvers". The following columns have to be present in the module - approvers json not null, approvers_names json not null.

    Delegations:
    • The approvers must be part of the management chain above the requestor.
    This function sends a review request (email) to a reviewer. 
    The email template is defined in module: Email Templates - review_request
    Function parameters: 
    template|email1|email2

    This function creates a PDF snapshot and sends it to EvroTrust for signature. The PDF is sent to the selected employee (field "staff_id").

    Requirements: 
        - Evrotrust API keys
        - The target module must contain a character varying field called "name". It should contain the description of the document.
    1. Searches all warehouse slips related to this manufacturing request.
    2. Deletes all products and materials and restores all quantities 

    Sends an email to selected target contacts, target groups, owner of the record and the assignee. 
    An email template name can be passed as a function parameter. This is done the following way: 

    SendEmail|template_name|recipient_1|recipient_2|recipeint_N

    -    template_name - the name of the template residing in the email_templates module
    -    recipient_N - Can be one of the following:
        * column name - a column that points to the users module, e.g. user_id (integer references users)
        * email address
        * management_chain - two levels above the employee
        * a column name holding the email address of the recipient
        * first_level_management_chain - one level above the employee
        * staff_json - looks for a column called 'staff_json'. The column must be type JSON and must contain the following json structure [ID, ...], e.g. [1,2,3], where 1, 2, 3 are IDs of employees in module "Staff" (fields first_manager_json, observers_json, budget_owners, second_manager_json also work).
        * __PRIV__PrivilegeName - e.g. __PRIV__Accouting. This will send email to employees in this privilege group

    Sends an email and attaches a pdf template to the email.
    This function can only be used in modules "Tenders" and "Surveys" 

    It  starts a tender or survey by selecting all participants and creating a record for each of them in the "Participants" table (survey_instances or tenders_instances). It copies all the data related to the record as well - questions etc.

    It is mandatory to define participants before using this function
    This function changes the status of the related project to "started". The module should contain a filed named project_id and it should point to a project in order the function to work
    .
    Transfer quantities from one warehouse location to another. Works ony in warehouse_transfers
    Used only in module Manufacturing requests. It transfers the manufactured product from one warehouse location to another. Useful for step Assembly. Accepts the following parameters: 

    SourceWarehouseID -> DestinationWarehouseID

    Example:

    1 -> 2
    Restrictions on each step
    To be documented

    Subsequent process steps
    To be documented

    Automated process steps
    To be documented